#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Converts all text nodes to within <body> to unicode braille characters.
(It doesn't help blind people, but it's fun anyway.)
"""

import xml.dom.minidom

def _convert_to_braille(text, parameters):
	text = (text.lower()
		.replace(u'a', u'⠁')
		.replace(u'b', u'⠃')
		.replace(u'c', u'⠉')
		.replace(u'd', u'⠙')
		.replace(u'e', u'⠑')
		.replace(u'f', u'⠋')
		.replace(u'g', u'⠛')
		.replace(u'h', u'⠓')
		.replace(u'i', u'⠊')
		.replace(u'j', u'⠚')
		.replace(u'k', u'⠅')
		.replace(u'l', u'⠇')
		.replace(u'm', u'⠍')
		.replace(u'n', u'⠝')
		.replace(u'o', u'⠕')
		.replace(u'p', u'⠏')
		.replace(u'q', u'⠟')
		.replace(u'r', u'⠗')
		.replace(u's', u'⠎')
		.replace(u't', u'⠞')
		.replace(u'u', u'⠥')
		.replace(u'v', u'⠧')
		.replace(u'w', u'⠺')
		.replace(u'x', u'⠭')
		.replace(u'y', u'⠽')
		.replace(u'z', u'⠵')
		.replace(u'1', u'⠼⠁')
		.replace(u'2', u'⠼⠃')
		.replace(u'3', u'⠼⠉')
		.replace(u'4', u'⠼⠙')
		.replace(u'5', u'⠼⠑')
		.replace(u'6', u'⠼⠋')
		.replace(u'7', u'⠼⠛')
		.replace(u'8', u'⠼⠓')
		.replace(u'9', u'⠼⠊')
		.replace(u'0', u'⠼⠚'));
	return text;


def execute_minidom(server, document, current_node=None, found_body=False):
	if not current_node:
		current_node = document

	for n in current_node.childNodes:
		if n.nodeType in (document.TEXT_NODE, document.CDATA_SECTION_NODE):
			if found_body:
				text = _convert_to_braille(n.data)
				current_node.insertBefore(document.createTextNode(text), n)
				current_node.removeChild(n)

		elif n.nodeType == document.ELEMENT_NODE:
			execute_minidom(server, document, n, found_body or n.localName == 'body')
